home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / macrosrc.arc / UNTIL.ASM < prev    next >
Encoding:
Assembly Source File  |  1983-11-17  |  1.6 KB  |  66 lines

  1.  
  2. *UNTIL LOOP MACRO
  3. *USES: AC AND LET MACRO
  4. *
  5. *      UNTIL COND
  6. *           [CONDITION COMP IN AC]
  7. *      DO
  8. *           [LOOP BODY-DONE IF AC TEST AT DO IS FALSE]
  9. *      NEXT
  10. *OR:
  11. *      UNTIL COND,<LET EXPR>
  12. *      DO
  13. *           [LOOP BODY-DONE IF <LET EXPR> TEST IS FALSE]
  14. *      NEXT
  15. *
  16. *CONDITIONS (COND) ARE THE SAME AS IN IF
  17.  
  18.        COPY MACROS.NEXT
  19.        COPY MACROS.DO
  20.  
  21. UNTIL  $MACRO          C,EE   START UNTIL CONDITIONAL
  22.        $VAR I,E,Q,W,T
  23.        $ASG '$$LPS' TO I.S    GET CNTXT VAR
  24.        $ASG I.SV+1 TO I.SV    PUSH CNTXT
  25.        $ASG '$$LP' TO Q.S
  26.        $ASG :Q::I.SV: TO I.SS MAKE THIS CNTXT NAME
  27.        $ASG '$$LAB' TO E.S    GET UIQUE LABEL
  28.        $ASG E.SV+1 TO E.SV    INCR
  29.        $ASG :I.SS: TO W.S     MAKE THIS CNTXT
  30.        $ASG E.SV TO W.SV      SAVE LABEL IN THIS CNTXT
  31.        $ASG 'EQ' TO T.S
  32.        $IF  C.SV=T.SV
  33.        $ASG 'BZ' TO W.SS
  34.        $ELSE
  35.        $ASG 'NE' TO T.S
  36.        $IF  C.SV=T.SV
  37.        $ASG 'BNZ' TO W.SS
  38.        $ELSE
  39.        $ASG 'LT' TO T.S
  40.        $IF  C.SV=T.SV
  41.        $ASG 'BLZ' TO W.SS
  42.        $ELSE
  43.        $ASG 'GT' TO T.S
  44.        $IF  C.SV=T.SV
  45.        $ASG 'BGZ' TO W.SS
  46.        $ELSE
  47.        $ASG 'LE' TO T.S
  48.        $IF  C.SV=T.SV
  49.        $ASG 'BLEZ' TO W.SS
  50.        $ELSE
  51.        $ASG 'GE' TO T.S
  52.        $IF  C.SV=T.SV
  53.        $ASG 'BGEZ' TO W.SS
  54.        $ELSE
  55.        $ASG :C.S: TO W.SS
  56.        $ENDIF
  57.        $ENDIF
  58.        $ENDIF
  59.        $ENDIF
  60.        $ENDIF
  61.        $ENDIF
  62. I$:W.SV: EQU $                TOP OF LOOP
  63.        $IF  EE.L#=0
  64.        LET  :EE:              DO LET
  65.        $ENDIF
  66.        $END